programmatic and reflective